// pages/function/sub/time-counter.js
const APP = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //逻辑变量
    dataSmsTimer:null,
    dataSmsCounter:0,
    dataSmsText:'',
    dataIsCounter:false,
    //计时器
    dataExamTimeCounter:1000,//单位秒
    dataExamTimeCounterTxt:'0:0:0',
    dataExamTimer:null,
    dataExamSynchTime:0,//同步时间（单位秒）
    dataExamSynchDiffTime:10,//同步时差（单位秒）
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.initSms();
    this.startTimer();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    if(null != this.data.dataSmsTimer){
      clearInterval(this.data.dataSmsTimer);
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 逻辑区域
   */

  //短信初始化计时器
  initSms:function(){
    this.setData({
      dataSmsCounter:120,
      dataSmsText:'发送验证码',
      dataIsCounter:false
    });    
  },

  //短信启动计时器
  startSms:function(){
    let _this = this;
    if(!_this.data.dataIsCounter){
      _this.setData({
        dataIsCounter:true,
        dataSmsText:'剩余'+_this.data.dataSmsCounter+'秒',
        dataSmsTimer:setInterval(function(){
          let _that = _this;
          _that.data.dataSmsCounter--;

          if(_that.data.dataSmsCounter < 1 ){
            _that.initSms();
            if(null != _that.data.dataSmsTimer){
              clearInterval(_that.data.dataSmsTimer);
            }
          }else{
            _that.setData({
              dataSmsText:'剩余'+_that.data.dataSmsCounter+'秒',
            });
          }
        }, 1000),
      });
    }else{
      APP.apptool.showToastInfo('计时中禁止点击！');
    }
  },

  //启动短信
  clickSms: function(event){
    this.startSms();
  },

  //时间计时装置
  synchronizedTimerTxt:function(){
    let _this = this, hour=0, minute=0,second=0;
    //时钟
    hour = parseInt(_this.data.dataExamTimeCounter/3600);
    //分钟
    minute = parseInt((_this.data.dataExamTimeCounter%3600)/60);
    //秒钟
    second = (_this.data.dataExamTimeCounter%3600)%60;
    _this.setData({
      dataExamTimeCounterTxt:hour+':'+minute+':'+second
    },function(){
      _this.data.dataExamTimeCounter--;
    });
    //同步计时
    _this.doSynchronizedServerTime();
  },
  
  //时间启动器
  startTimer:function(){
    let _this = this;
    _this.setData({
      dataExamTimer:setInterval(function(){
        let _that = _this;
        if(_that.data.dataExamTimeCounter < 1 ){
          if(null != _that.data.dataExamTimer){
            clearInterval(_that.data.dataExamTimer);
          }
        }else{
          _that.synchronizedTimerTxt();
        }
      }, 1000),
      dataExamSynchTime:_this.data.dataExamTimeCounter,
    },function(){
      _this.synchronizedTimerTxt();
    })
  },

  //同步计时时间
  doSynchronizedServerTime:function(){
    let _this = this;

    if(_this.data.dataExamSynchTime - _this.data.dataExamTimeCounter >= _this.data.dataExamSynchDiffTime){
      // //执行同步
      // _this._api('/miniprogram/NavExam/examTimeCounter', {
      //   exam_type:_this.data.dataOperationType,
      //   exam_paper_id:_this.data.dataExamPaperId,
      //   exam_last_time:_this.data.dataExamTimeCounter
      // }, null,function(resData){
      //   APP.applog.info('时间同步成功！');
      // },function(){},function(){
      //   _this.data.dataExamSynchTime = _this.data.dataExamTimeCounter;
      // });
      APP.applog.info('定时处理任务完成！');
      _this.data.dataExamSynchTime = _this.data.dataExamTimeCounter;
    }
  },

})